home *** CD-ROM | disk | FTP | other *** search
- ;;; -*-Scheme-*-
-
- (require 'xlib)
-
- (define (track)
- (let* ((dpy (open-display))
- (root (display-root-window dpy))
- (gc (create-gcontext 'window root
- 'function 'xor
- 'foreground (black-pixel dpy)
- 'subwindow-mode 'include-inferiors))
- (where (query-pointer root))
- (lx (car where)) (ly (cadr where)) (lw 300) (lh 300)
- (move-outline
- (lambda (x y)
- (if (not (and (= x lx) (= y ly)))
- (begin
- (draw-rectangle root gc lx ly lw lh)
- (draw-rectangle root gc x y lw lh)
- (set! lx x) (set! ly y))))))
- (unwind-protect
- (case (grab-pointer root #f '(pointer-motion button-press)
- #f #f 'none 'none 'now)
- (success
- (with-server-grabbed dpy
- (draw-rectangle root gc lx ly lw lh)
- (display-flush-output dpy)
- (handle-events dpy #t #f
- (motion-notify
- (lambda (event root win subwin time x y . rest)
- (move-outline x y) #f))
- (else (lambda args #t)))))
- (else
- (format #t "Not grabbed!~%")))
- (draw-rectangle root gc lx ly lw lh)
- (close-display dpy))))
-
- (track)
-